bitkeeper revision 1.1615.1.1 (429c8530L_ZtVuxsQcKwKB3yPuljog)
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 31 May 2005 15:39:28 +0000 (15:39 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 31 May 2005 15:39:28 +0000 (15:39 +0000)
commit88198ec1b0bd2094cbabd600baae1ebe3026e7ad
tree9791c2750f1f9561f652a8887c43e3ab95d16f2c
parent59f83bdc8f5ba87cb8bd1235f42bd27c1fff39c0
bitkeeper revision 1.1615.1.1 (429c8530L_ZtVuxsQcKwKB3yPuljog)

Subject: PAE support

This patch adds initial support for PAE paging to xen.
This patch does:

 * boot Xen itself with PAE paging enabled.
 * add PAE support to the dom0 domain builder.

Some notes on the design and the changes:

 * There are two new config options: CONFIG_X86_PAE (boolean,
   same name Linux uses to simply things) and
   CONFIG_PAGING_LEVELS (int, possible values are 2,3,4).  I've
   used #if CONFIG_PAGING_LEVELS for stuff which simply depends
   on the number of paging levels in the code common for
   x86-32/64, and CONFIG_X86_PAE for special PAE quirks or
   i386-only stuff.  I've tried to avoid ifdefs if possible
   though, often I rearranged code to make it work in both
   PAE and non-PAE case instead.

 * idle_pg_table:  3rd level is statically initialized, 2nd
   level is contignous in physical and virtual memory, so it can
   be addressed linear (the dom0 builder uses the same trick to
   simplify things a bit btw.).  There are two new symbols:
   idle_pg_table_l3 and idle_pg_table_l2 for the two tables.
   idle_pg_table is aliased to the toplevel page table, i.e.
   idle_pg_table_l3 in PAE mode and idle_pg_table_l2 in non-pae
   mode.  The idle l3 table is actually never ever touched after
   boot, the l2 table is accessed via idle_pg_table_l2 and
   addressed linear in both PAE and non-PAE mode.

 * I've added a "intpte_t" type and a PRIpte define, modeled
   after the C99 inttypes.h header, for page table entries.

Signed-off-by: Gerd Knorr <kraxel@bytesex.org>
30 files changed:
.rootkeys
xen/arch/x86/audit.c
xen/arch/x86/boot/x86_32.S
xen/arch/x86/dom0_ops.c
xen/arch/x86/domain.c
xen/arch/x86/domain_build.c
xen/arch/x86/idle0_task.c
xen/arch/x86/mm.c
xen/arch/x86/setup.c
xen/arch/x86/shadow.c
xen/arch/x86/traps.c
xen/arch/x86/vmx.c
xen/arch/x86/vmx_io.c
xen/arch/x86/vmx_vmcs.c
xen/arch/x86/x86_32/domain_page.c
xen/arch/x86/x86_32/mm.c
xen/arch/x86/x86_32/traps.c
xen/arch/x86/x86_64/mm.c
xen/include/asm-x86/config.h
xen/include/asm-x86/domain.h
xen/include/asm-x86/mm.h
xen/include/asm-x86/page.h
xen/include/asm-x86/shadow.h
xen/include/asm-x86/smp.h
xen/include/asm-x86/types.h
xen/include/asm-x86/x86_32/page-2level.h [new file with mode: 0644]
xen/include/asm-x86/x86_32/page-3level.h [new file with mode: 0644]
xen/include/asm-x86/x86_32/page.h
xen/include/asm-x86/x86_64/page.h
xen/include/public/arch-x86_32.h